package com.and9.mchen.mcmusic.dao;

import com.and9.mchen.mcmusic.entity.Introduction;
import com.and9.mchen.mcmusic.exception.DaoException;

/**
 * 
 * @author MC
 * @version  1.0
 */
public interface IIntroductionDao {

	String[] BASEPROPERTYNAMES={"content"};
	
	/**
	 * <p>
	 * 如果introduction对象为null<br/>
	 * 则返回-1
	 * </p>
	 * <p>
	 * 保存对象到数据库的时候，introduction的id为null或者0即可<br/>
	 * 保存对象时，propertyNames只要传null即可<br/>
	 * </p>
	 * <p>
	 * 更新对象的时候，不准更新introduction父类的属性<br/>
	 * 如果存在父类属性，则会修改propertyNames属性为introduction属性
	 * </p>
	 * @param experience
	 * @param propertyNames
	 * @return
	 * 返回创建或者更新<tt>introduction</tt>成功的次数
	 * @throws DaoException
	 */
	int createOrUpdateIntroduction(Introduction introduction, String... propertyNames) throws DaoException;
	
	/**
	 * 如果id <= 0
	 * 则返回null
	 * @param id
	 * @return
	 * 返回通过introduction的<tt>id</tt>获取introduction
	 * 如果为找不到则返回null
	 * @throws DaoException
	 */
	Introduction getIntroductionByIntroductionId(long id) throws DaoException;
	
	/**
	 * 如果uniqueId为null 或者 ""
	 * 则返回null
	 * @param uniqueId
	 * @return
	 * 返回通过introduction的<tt>uniqueId</tt>获取introduction
	 * 如果为找不到则返回null
	 * @throws DaoException
	 */
	Introduction getIntroductionByIntroductionUniqueId(String uniqueId)throws DaoException;
	
	/**
	 * 如果id <= 0
	 * 则返回-1
	 * @param id
	 * @return
	 * 返回根据introduction的<tt>id</tt>删除introduction成功的次数
	 * @throws DaoException
	 */
	int deleteIntroductionByIntroductionId(long id) throws DaoException;
	
	/**
	 * 如果id <= 0
	 * 返回null
	 * @param id
	 * @return
	 * 返回根据singer的<tt>id</tt>获取introduction
	 * 查找失败返回null
	 * @throws DaoException
	 */
	Introduction getIntroductionBySingerId(long id) throws DaoException;
	
	/**
	  * 如果id <= 0
	 * 返回null
	 * @param id
	 * @return
	 * 返回根据album的<tt>id</tt>获取introduction
	 * 查找失败返回null
	 * @throws DaoException
	 */
	Introduction getIntroductionByAlbumId(long id) throws DaoException;
	
}
